#ifndef TYPE_HPP
#define TYPE_HPP

#include <iostream>
#include <string>


using namespace std;


/**
 * Classe abstraite de gestion d'un type.
 */
class Type
{
	protected:
 	   	string name;

	public:
		/**
		*	Constructeur du Type
		*/
		Type(string name);

		/**
		*	methode virtuelle pour la classe abstraite
		*/
		virtual ~Type() = 0;

		friend ostream& operator<<(ostream& os, const Type& type);

		/**
		 * recupere le nom du type courant.
		 *
		 * @return Name du type courant.
		 */
		string getName() const;
};

#endif
